package com.loan.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.loan.system.domain.AddressEntity;

import java.util.List;

/**
 * @author shiguang on 2022/9/5 9:31
 */
public interface AddressService {

    /**
     * 保存
     * @param name
     * @param parentId
     * @return
     */
    int save(String name, Long parentId);

    /**
     * 获取所有父类
     * @return
     */
    List<AddressEntity> getParentList();

    String checkNameUnique(AddressEntity entity);

    int insertAddress(AddressEntity entity);

    /**
     * 根据名称查询是否存在
     * @param name
     * @return
     */
    AddressEntity selectByName(String name);

    /**
     * 根据code查询是否存在
     * @param code
     * @return
     */
    AddressEntity selectByCode(String code);

    void updateAddress(AddressEntity address);

    List<AddressEntity> selectAddressList(AddressEntity address);

    /**
     * 根据ID获取地址详情
     * @param id
     * @return
     */
    AddressEntity selectAddressById(Long id);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param list 地址列表
     * @return 下拉树结构列表
     */
    List<Tree<Long>> buildAddressTreeSelect(List<AddressEntity> list);

    int deleteAddressById(Long id);
}
